package com.sojson.dao.impl;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Repository;

import com.sojson.base.impl.BaseDaoImpl;
import com.sojson.dao.UserRoleDao;
import com.sojson.entity.po.UserRole;

/**
 * 用户和角色关联表Dao实现类(目的:把分页插件从Service层分离,这样就不用每次调Dao接口都要分页)
 * 
 * @author liu
 * @date 2021-04-15
 */
@Repository
public class UserRoleDaoImpl extends BaseDaoImpl<UserRoleDao, UserRole> implements UserRoleDao {

    @Resource
    private UserRoleDao userRoleDao;

    /**
     * 单条插入
     * 
     * @param userRole
     * @return
     */
    @Override
    public int insert(UserRole userRole) {
        return userRoleDao.insert(userRole);
    }

    /**
     * 批量插入
     * 
     * @param userRole
     * @return
     */
    @Override
    public int insertList(List<UserRole> userRoles) {
        return userRoleDao.insertList(userRoles);
    }

    /**
     * 通过对象批量删除(物理删除)
     * 
     * @param userRole
     * @return
     */
    @Override
    public int deleteByDto(UserRole userRole) {
        return userRoleDao.deleteByDto(userRole);
    }

    /**
     * 统计全部数量
     * 
     * @return
     */
    @Override
    public int countAll() {
        return userRoleDao.countAll();
    }

    /**
     * 查询所有
     * 
     * @return
     */
    @Override
    public List<UserRole> listAll() {
        return userRoleDao.listAll();
    }

    /**
     * 根据对象统计数量
     * 
     * @param userRole
     * @return
     */
    @Override
    public int countByDto(UserRole userRole) {
        return userRoleDao.countByDto(userRole);
    }

    /**
     * 根据对象查询
     * 
     * @param userRole
     * @return
     */
    @Override
    public List<UserRole> listByDto(UserRole userRole) {
        startPage(userRole);
        return userRoleDao.listByDto(userRole);
    }

    /**
     * 通过roleId删除(物理删除)
     * 
     * @param roleId
     * @return
     */
    @Override
    public int deleteByRoleId(Integer roleId) {
        return userRoleDao.deleteByRoleId(roleId);
    }

    /**
     * 通过roleId列表删除(物理删除)
     * 
     * @param roleIds
     * @return
     */
    @Override
    public int deleteByRoleIdList(List<Integer> roleIds) {
        return userRoleDao.deleteByRoleIdList(roleIds);
    }

    /**
     * 通过roleId更新(全部更新)
     * 
     * @param userRole
     * @return
     */
    @Override
    public int updateByRoleId(UserRole userRole) {
        return userRoleDao.updateByRoleId(userRole);
    }

    /**
     * 通过roleId列表更新(全部更新)(更新内容相同)
     * 
     * @param userRole
     * @return
     */
    @Override
    public int updateStaticByRoleIdList(UserRole userRole) {
        return userRoleDao.updateStaticByRoleIdList(userRole);
    }

    /**
     * 通过roleId列表更新(全部更新)(更新内容不相同)
     * 
     * @param userRoles
     * @return
     */
    @Override
    public int updateChangeByRoleIdList(List<UserRole> userRoles) {
        return userRoleDao.updateChangeByRoleIdList(userRoles);
    }

    /**
     * 通过roleId更新(局部更新)
     * 
     * @param userRole
     * @return
     */
    @Override
    public int updatePartialByRoleId(UserRole userRole) {
        return userRoleDao.updatePartialByRoleId(userRole);
    }

    /**
     * 通过roleId列表更新(局部更新)(更新内容相同)
     * 
     * @param userRole
     * @return
     */
    @Override
    public int updateStaticPartialByRoleIdList(UserRole userRole) {
        return userRoleDao.updateStaticPartialByRoleIdList(userRole);
    }

    /**
     * 通过roleId列表更新(局部更新)(更新内容不相同)
     * 
     * @param userRoles
     * @return
     */
    @Override
    public int updateChangePartialByRoleIdList(List<UserRole> userRoles) {
        return userRoleDao.updateChangePartialByRoleIdList(userRoles);
    }

    /**
     * 通过roleId查询
     * 
     * @param roleId
     * @return
     */
    @Override
    public UserRole findByRoleId(Integer roleId) {
        return userRoleDao.findByRoleId(roleId);
    }

    /**
     * 通过roleId列表查询
     * 
     * @param roleIds
     * @return
     */
    @Override
    public List<UserRole> findByRoleIdList(List<Integer> roleIds) {
        return userRoleDao.findByRoleIdList(roleIds);
    }

    /**
     * 通过对象查询roleId列表
     * 
     * @param userRole
     * @return
     */
    @Override
    public List<Integer> findRoleIdByDto(UserRole userRole) {
        return userRoleDao.findRoleIdByDto(userRole);
    }

    /**
     * 通过userId删除(物理删除)
     * 
     * @param userId
     * @return
     */
    @Override
    public int deleteByUserId(Integer userId) {
        return userRoleDao.deleteByUserId(userId);
    }

    /**
     * 通过userId列表删除(物理删除)
     * 
     * @param userIds
     * @return
     */
    @Override
    public int deleteByUserIdList(List<Integer> userIds) {
        return userRoleDao.deleteByUserIdList(userIds);
    }

    /**
     * 通过userId更新(全部更新)
     * 
     * @param userRole
     * @return
     */
    @Override
    public int updateByUserId(UserRole userRole) {
        return userRoleDao.updateByUserId(userRole);
    }

    /**
     * 通过userId列表更新(全部更新)(更新内容相同)
     * 
     * @param userRole
     * @return
     */
    @Override
    public int updateStaticByUserIdList(UserRole userRole) {
        return userRoleDao.updateStaticByUserIdList(userRole);
    }

    /**
     * 通过userId列表更新(全部更新)(更新内容不相同)
     * 
     * @param userRoles
     * @return
     */
    @Override
    public int updateChangeByUserIdList(List<UserRole> userRoles) {
        return userRoleDao.updateChangeByUserIdList(userRoles);
    }

    /**
     * 通过userId更新(局部更新)
     * 
     * @param userRole
     * @return
     */
    @Override
    public int updatePartialByUserId(UserRole userRole) {
        return userRoleDao.updatePartialByUserId(userRole);
    }

    /**
     * 通过userId列表更新(局部更新)(更新内容相同)
     * 
     * @param userRole
     * @return
     */
    @Override
    public int updateStaticPartialByUserIdList(UserRole userRole) {
        return userRoleDao.updateStaticPartialByUserIdList(userRole);
    }

    /**
     * 通过userId列表更新(局部更新)(更新内容不相同)
     * 
     * @param userRoles
     * @return
     */
    @Override
    public int updateChangePartialByUserIdList(List<UserRole> userRoles) {
        return userRoleDao.updateChangePartialByUserIdList(userRoles);
    }

    /**
     * 通过userId查询
     * 
     * @param userId
     * @return
     */
    @Override
    public UserRole findByUserId(Integer userId) {
        return userRoleDao.findByUserId(userId);
    }

    /**
     * 通过userId列表查询
     * 
     * @param userIds
     * @return
     */
    @Override
    public List<UserRole> findByUserIdList(List<Integer> userIds) {
        return userRoleDao.findByUserIdList(userIds);
    }

    /**
     * 通过对象查询userId列表
     * 
     * @param userRole
     * @return
     */
    @Override
    public List<Integer> findUserIdByDto(UserRole userRole) {
        return userRoleDao.findUserIdByDto(userRole);
    }

    /**
     * 清空数据(物理清空)
     */
    @Override
    public void clear() {
        userRoleDao.clear();
    }

    /**
     * 通过角色ID查询角色使用数量
     *
     * @param roleId 角色ID
     * @return 结果
     */
    @Override
    public int countUserRoleByRoleId(Integer roleId) {
        return userRoleDao.countUserRoleByRoleId(roleId);
    }

}